

import router from './router'
import store from './store'
import NProgress from 'nprogress' // Progress 进度条
import 'nprogress/nprogress.css'// Progress 进度条样式
import { getToken } from '@/utils/auth' // 验权

const whiteList = ['/login']
router.beforeEach((to, from, next) => {
  NProgress.start()
  if (getToken()) {
    if (to.path === '/login') {
      next({ path: '/' })
    } else {
      if (store.getters.roles.length === 0) {
        store.dispatch('GetInfo').then(res => {
          next()
          // const roles = ['admin']
          // store.dispatch('GenerateRoutes', { roles }).then((res) => {
          //   console.log("二次添加到路由表的异步路由")
          //   //console.log(this.$store.getters.addRouters);
          //   console.log(res);
          //   router.addRoutes(res)
          //   next({ ...to, replace: true })
          // })
        })
      } else {
        next()
      }
    }
  } else {
    if (whiteList.indexOf(to.path) !== -1) {
      next()
    } else {
      next('/login')
      NProgress.done()
    }
  }
})

router.afterEach(() => {
  NProgress.done() // 结束Progress
})








// import router from './router'
// import store from './store'
// import NProgress from 'nprogress' // Progress 进度条
// import 'nprogress/nprogress.css'// Progress 进度条样式
// import { Message } from 'element-ui'
// import { getToken } from '@/utils/auth' // 验权

// import Layout from './views/layout/Layout'


// const whiteList = ['/login'] // 不重定向白名单

// //我修改后的
// // router.beforeEach((to, form, next) => {
// //   NProgress.start();
// //   if (getToken()) {
// //   if (to.path === '/') {
// //    router.replace('/index');
// //    NProgress.done();
// //   } else {
// //    console.log(store.state.list.length);
// //    if (store.state.list.length === 0) {
// //     //如果没有权限列表，将重新向后台请求一次
// //    store.dispatch('FedLogOut').then(res => {
// //     //调用权限匹配的方法
// //     routerMatch(res, asyncRouterMap).then(res => {
// //      //将匹配出来的权限列表进行addRoutes
// //     router.addRoutes(res[0]);
// //     next(to.path)
// //     })
// //    }).catch(() => {
// //     router.replace('/')
// //    })
// //    } else {
// //    if (to.matched.length) {
// //     next()
// //    } else {
// //     router.replace('/')
// //    }
// //    }
// //   }
// //   } else {
// //   if (whiteList.indexOf(to.path) >= 0) {
// //    next()
// //   } else {
// //    router.replace('/');
// //    NProgress.done();
// //   }
// //   }
// //  });



// //原来的
// router.beforeEach((to, from, next) => {
//   NProgress.start()
//   if (getToken()) {
//     if (to.path === '/login') {
//       next({ path: '/' })
//       NProgress.done() // if current page is dashboard will not trigger	afterEach hook, so manually handle it
//     } else {
//       if (store.getters.roles.length === 0) {
//         store.dispatch('GetInfo').then(res => { // 拉取用户信息

//           //const roles = res.data.role
//           const roles = ['admin'];
//           store.dispatch('GenerateRoutes', { roles }).then(() => {
//             router.addRoutes(store.getters.addRouters)
//             next({ ...to })
//           })

//           // const  testRouter =[{
//           //   path: '/pms',
//           //   component: Layout,
//           //   redirect: '/pms/product',
//           //   name: 'pms',
//           //   meta: {
//           //     title: '商品', icon: 'product',
//           //     permission:['admin','test'],
//           //     roles:['admin','test','管理猿']
//           //   },
//           // }];
//           // router.addRoutes(testRouter) 
//           //  next({ ...to, replace: true })



//          // const roles = ['admin'];
        
//           // store.dispatch('generateRoutes', { roles }).then(() => { // 生成可访问的路由表
//           //   router.addRoutes(store.getters.addRouters) // 动态添加可访问路由表
//           //   next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record
//           // })
//          // router.addRoutes('/pms') 
//         }).catch((err) => {
//           store.dispatch('FedLogOut').then(() => {
//             Message.error(err || 'Verification failed, please login again')
//             next({ path: '/' })
//           })
//         })
//       } else {
//         next()
//       }
//     }
//   } else {
//     if (whiteList.indexOf(to.path) !== -1) {
//       next()
//     } else {
//       next('/login')
//       NProgress.done()
//     }
//   }
// })




// //花裤衩的
// // router.beforeEach((to, form, next) => {
// //   if (sessionStorage.getItem('token')) {
// //   if (to.path === '/') {
// //    router.replace('/index')
// //   } else {
// //    console.log(store.state.list.length);
// //    if (store.state.list.length === 0) {
// //     //如果没有权限列表，将重新向后台请求一次
// //    store.dispatch('getPermission').then(res => {
// //     //调用权限匹配的方法
// //     routerMatch(res, asyncRouterMap).then(res => {
// //      //将匹配出来的权限列表进行addRoutes
// //     router.addRoutes(res[0]);
// //     next(to.path)
// //     })
// //    }).catch(() => {
// //     router.replace('/')
// //    })
// //    } else {
// //    if (to.matched.length) {
// //     next()
// //    } else {
// //     router.replace('/')
// //    }
// //    }
// //   }
// //   } else {
// //   if (whiteList.indexOf(to.path) >= 0) {
// //    next()
// //   } else {
// //    router.replace('/')
// //   }
// //   }
// //  });




// router.afterEach(() => {
//   NProgress.done() // 结束Progress
// })
